package com.xbongbong.pro.performanceset.pojo.vo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.pojo.IdNamePojo;
import com.xbongbong.pro.performanceset.pojo.PerformanceSetProductPojo;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @description: 业绩目标指标编辑
 * @Author: hongxiao
 * @date: 2019-01-31 17:29
 * @since v1.0
 */
@Getter
@Setter
@ToString
public class PerformanceSetEditVO extends BaseVO {
    /**
     * 指标id
     */
    private Long id;
    /**
     * 是否启用：0不启用,1启用
     */
    private Integer enable;
    /**
     * 是否启用名称
     */
    private String enableStr;
    /**
     * 指标类型 1系统指标 2自定义指标
     */
    private Integer statisticsType;
    /**
     * 指标类型名称
     */
    private String statisticsTypeStr;
    /**
     * 指标名称
     */
    private String name;
    /**
     * 指标简介
     */
    private String memo;
    /**
     * 考核对象--部门
     */
    private List<IdNamePojo> permissions;
    /**
     * 最小考核周期：1每月,2每周,3每天
     */
    private Integer minCycle;
    /**
     * 考核周期选项
     */
    private JSONArray minCycleArray;
    /**
     * 考核方式：1动态数值型,2固定数值型
     */
    private Integer assessType;
    /**
     * 固定数值，当选择“固定数值型”，要填写该值
     */
    private Double fixedValue;
    /**
     * 单位
     */
    private String unit;
    /**
     * 单位
     */
    private String unitValue;
    /**
     * 是否是考核产品的指标
     */
    private Boolean productFlag;
    /**
     * 考核的产品信息
     */
    private List<PerformanceSetProductPojo> assessProductArray;
    /**
     * 数据来源，只能有一个，代表主驱动表 格式为：{"appId":1,"menuId":2,"linkAttr":"text_1"}
     */
    private JSONObject driverSources;
    /**
     * 考核指标，{"name":"字段名","attr":"attr1"}。统计的数字型业务字段，如果是获取指标值(且不是求总数)的，则该条件必选
     */
    private JSONObject sourceAttr;
    /**
     * 归属人字段，{"name":"","attr":"userId"}。按照哪一个归属字段统计（如创建人、签订人等）
     */
    private JSONObject belongAttr;
    /**
     * 统计日期，用attrName显示，{"name":"","attr":""}。按照哪一个时间范围字段进行统计（如创建时间、自定义的时间类型字段）
     */
    private JSONObject timeAttr;
    /**
     * 计算方式
     * @see com.xbongbong.paas.enums.AggTypeEnum
     */
    private Integer statisticsWay;
    /**
     * 高级过滤条件 格式：[{}]
     */
    private JSONArray filter;
    /**
     * 穿透展示字段[{"name":"","attr":""}]
     */
    private JSONArray penetrateAttr;
    /**
     * 登录员工是否在该指标的考核对象内：true在，false不在。在考核范围内则有设置入口，不在则无设置入口
     */
    private Boolean containsFlag;
    /**
     * 是否有导入权限
     */
    private Boolean importFlag;
}
